home *** CD-ROM | disk | FTP | other *** search
/ Aminet 50 / Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso / Aminet / util / wb / BWS_Scalos.lha / BWS_Scalos / Cascade_plugin / cascade.e next >
Text File  |  2001-12-05  |  2KB  |  97 lines

  1. OPT PREPROCESS
  2.  
  3.  
  4. LIBRARY 'Cascade.plugin',2,03,'$VER: Cascade.plugin 2.03 (05.12.2001)' IS
  5.         cascade(A0,A1)
  6.  
  7. MODULE 'scalos/scalos','intuition/intuition','intuition/intuitionbase',
  8.     'intuition/screens','amigaini','amigainibase'
  9.  
  10.  
  11. PROC cascade(wt:PTR TO scawindowtask,inode:PTR TO scaiconnode) HANDLE
  12. DEF w:PTR TO window,x=0,y=15,xi=15,yi=15,
  13. mx,my,ai=0:PTR TO amigaini
  14.  
  15. /* Check for amigaini lib and load attempt to load settings */
  16.  
  17.  
  18.  IF (amigainibase:=OpenLibrary(AMIGAINI_NAME,AMIGAINI_VMIN))<>NIL
  19.  NEW ai
  20.  
  21.  Ini_Init(ai,'ENV:Scalos/Cascade.ini')
  22.  Ini_Read(ai)
  23.  
  24.    IF ai.error=INIE_Ok
  25.  
  26.      IF Ini_FindGroup(ai,'INITIAL')<>-1
  27.      x:=Ini_GetInt(ai,'LEFT',0)
  28.      y:=Ini_GetInt(ai,'TOP', 15)
  29.      ENDIF
  30.  
  31.      IF Ini_FindGroup(ai,'INCREMENT')<>-1
  32.      xi:=Ini_GetInt(ai,'MOVE RIGHT',15)
  33.      yi:=Ini_GetInt(ai,'MOVE DOWN' ,15)
  34.      ENDIF
  35.  
  36.    ENDIF
  37.  ENDIF
  38.  
  39. mx,my:=mxy()
  40.  
  41. -> get apointer to the passed window structure
  42. w:=wt.window
  43.  
  44. /* see if multiple windows are open and cycle back to the first one */
  45. IF w.parent THEN WHILE w.parent DO w:=w.parent
  46.  
  47. /* Now cycle through the window list in the right order */
  48.  
  49. w:=w.descendant -> wb.window + 1
  50.  
  51. WHILE w
  52.  
  53.  IF StrLen(w.title)<>0  -> window has title text
  54.  stack(w,x,y,mx,my)     -> Stack the window
  55.  x:=x+xi
  56.  y:=y+yi
  57.  ENDIF
  58.  
  59. w:=w.descendant
  60. ENDWHILE
  61.  
  62. EXCEPT DO
  63. IF ai THEN END ai
  64. IF amigainibase THEN CloseLibrary(amigainibase)
  65. ENDPROC
  66.  
  67. PROC stack(w:PTR TO window,x,y,mx,my); DEF dx,dy,dw=0,dh=0
  68. dx:=(0-w.leftedge)+x
  69. dy:=(0-w.topedge)+y
  70.  
  71. IF (w.width+x) > mx
  72. dw:=mx-(w.width+x)
  73. IF w.width+dw < w.minwidth THEN dw:=w.minwidth-w.width
  74. ENDIF
  75. IF (w.height+y) > my
  76. dh:=my-(w.height+y)
  77. IF w.height+dh < w.minheight THEN dh:=w.minheight-w.height
  78. ENDIF
  79.  
  80. IF (dw) OR (dh) THEN SizeWindow(w,dw,dh)
  81.  
  82.  MoveWindow(w,dx,dy)
  83.  WindowToFront(w)
  84.  ActivateWindow(w)
  85. ENDPROC
  86.  
  87. PROC mxy(); DEF ib:PTR TO intuitionbase,x,y
  88. ib:=intuitionbase
  89. Forbid()  -> forbid acces while we mess around
  90. -> get screen size
  91. x:=ib.activescreen::screen.width
  92. y:=ib.activescreen::screen.height
  93. Permit()
  94. ENDPROC x,y
  95.  
  96. PROC main() IS EMPTY
  97.